home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #216 (1993)(Rhein-Sieg-Soft)(Disk 1 of 2).zip
/
Franz PD Disk #216 (1993)(Rhein-Sieg-Soft)(Disk 1 of 2).adf
/
KKK
/
cas8
(
.txt
)
< prev
next >
Wrap
AmigaBASIC Source Code
|
1993-02-02
|
33KB
|
1,050 lines
REM Kompaktkassettenkuvert.REL,Version 1.18a
REM Lothar Berndt,4240 Emmerich 1, 3/1990
Init:
Version$="Kompaktkassettenkuvert.REL, Version 1.18a"
DEFINT a-z:FOR i=1 TO 4:MENU i,0,0,"":NEXT i
ON ERROR GOTO Fehler
ON BREAK GOSUB ControlC:BREAK ON
IF FRE(-1)>500000 THEN
SNr=1:SCREEN SNr,640,256,2,2:bs=1
ELSE
SNr=-1:bs=0
END IF
WINDOW 3,,(0,227)-(631,242),16,SNr:WINDOW CLOSE 1
WNr=2:WINDOW WNr,Version$,(0,0)-(631,212),22,SNr:wpr&=WINDOW(7)
OPEN"Farbdaten" FOR INPUT AS 1
INPUT#1,Farbzahl:DIM Farbwert!(Farbzahl,3)
FOR i=0 TO Farbzahl:FOR J=1 TO 3
INPUT#1,Farbwert!(i,J):NEXT J
PALETTE i,Farbwert!(i,1),Farbwert!(i,2),Farbwert!(i,3):NEXT i:CLOSE 1
WINDOW OUTPUT 3:GOSUB Text1:WINDOW OUTPUT WNr
CLS:LOCATE 13,31:PRINT"LESE LIBRARIES EIN"
DECLARE FUNCTION Examine& LIBRARY
DECLARE FUNCTION ExNext& LIBRARY
DECLARE FUNCTION Lock& LIBRARY
DECLARE FUNCTION AllocRemember& LIBRARY
dos.lib
intuition.lib
CLS:LOCATE 13,31:PRINT"VORBEREITUNGEN"
anz=50 'Anzahl der Einträge im Verzeichnis
m=27 'Anzahl der Felder-1, bei Seite A 14, bei Seite B 14
n=500 'Anzahl der Datensätze
DIM SHARED DirName$(anz),DirSize&(anz),DirBlks&(anz)
DIM a$(5),b$(m),c$(2),f$(m),la(m),la1(2),mo$(10),ra$(7),tf$(3)
FOR i=0 TO m:la(i)=31:NEXT i:la1(0)=3:la1(1)=60:la1(2)=60
tf$(0)="Nr.:":tf$(1)="TA:":tf$(2)="NR:":tf$(3)="LÄN:":fuell$=".":AB$=""
loesch$="":dn$="":c$="":Suffix$=".KKK_REL":tst=0:Satzlaenge=1081
l=3:p=3:abbruch=3:x=0:y=0:f=0:r=0:ll=0:c=0:px=0:py=0:h=0:SatzNr=0
Dateigroesse&=0:xp=0:yp=0:counter=0:gespeichert=0:RelOffen=0
qo=0:i=0:bx=6:hy=8:pa1=0:an=0:ze=0:fa=0:z=0:Spalte=0:Fett=0:Doppel=0:dr=0
jj=4000:px1=0:py1=0:px2=0:py2=0:qa=0:erg&=0:tt=0:req=0:win=0
ra$(0)=""
ra$(1)="ANFANG"
ra$(2)="ENDE"
ra$(3)="Maximale Anzahl erreicht"
ra$(4)="Daten ausgeben "
ra$(5)="Kompaktkassetenkuvert-Bildschirm"+CHR$(0)
ra$(6)="Das geht nicht!"
ra$(7)="Sicher?"
mo$(0)="Datei öffnen oder einrichten"
mo$(1)="Datei einrichten, Dateinamen eingeben"
mo$(2)=""
mo$(3)="Datensatz eingeben "
mo$(4)="Datensatz ausgeben "
mo$(5)=""
mo$(6)=""
mo$(7)=""
mo$(8)="Datei öffnen"
mo$(9)="Datei von Diskette löschen"
mo$(10)="Beenden"
esc$=CHR$(27):af$=CHR$(34):InitPrinter$=esc$+"#1"
CondOn$=esc$+"[4w":CondOff$=esc$+"[3w"
NLQOn$=esc$+"[2"+af$+"z":NLQOff$=esc$+"[1"+af$+"z"
UndlnOn$=esc$+"[4m":UndlnOff$=esc$+"[24m":NoMargin$=esc$+"#3"
MENU 1,0,1,"Datei"
MENU 1,1,1,"Einrichten ":MENU 1,2,1,"Öffnen "
MENU 1,3,0,"Schließen ":MENU 1,4,1,"Löschen "
MENU 1,5,1,"Verzeichnis":MENU 1,6,1,"Ende "
MENU 2,0,0,"Datensatz"
MENU 2,1,1,"Eingeben ":MENU 2,2,1,"Farbe "
MENU 3,0,0,"Info"
MENU 3,1,1,"Programm"
MENU 3,2,1,"Datei ":MENU 3,3,1,"Format "
MENU 3,4,1,"Druck ":MENU 3,5,1,"Tasten "
IF bs=1 THEN GOSUB ScnT
CLS:GOSUB Titel:SetTitle"Verzeichnis lesen"
Dir$="Daten":GOSUB GetDir:gespeichert=0:SortDir:SetTitle mo$(0)
ON MENU GOSUB Auswahl:MENU ON
Wa1:
SLEEP
GOTO Wa1
Auswahl:
ON MENU(0) GOTO men1,men2,men3
men1: ON MENU(1) GOTO Einrichten,Laden,Schliessen,DateiLoeschen,Verz,Ende
men2: ON MENU(1) GOTO Eingabe,Farbe
men3: ON MENU(1) GOTO Prg,Datei,DFormat,Kdruck,Tas
MenuesAus:
FOR i=1 TO 3:MENU i,0,0:NEXT i:MENU OFF:RETURN
MenuesAn:
FOR i=1 TO 3:MENU i,0,1:NEXT i:MENU ON:RETURN
Titel:
LOCATE 12,27 :PRINT"Kompaktkassetten-Kuvert"
LOCATE 14,28:PRINT" Lothar Berndt 1990"
LOCATE 16,32:PRINT RIGHT$(Version$,13)
RETURN
Text1:
LINE(12,0)-(104,10),2,bf:LINE(114,0)-(206,10),2,bf
LINE(215,0)-(259,10),2,bf:LINE(265,0)-(309,10),2,bf
LINE(315,0)-(359,10),2,bf:LINE(365,0)-(409,10),2,bf
LINE(418,0)-(510,10),2,bf:LINE(520,0)-(612,10),2,bf
LINE(12,14)-(206,25),2,bf:LINE(215,14)-(409,25),2,bf
LINE(418,14)-(510,25),2,bf:LINE(520,14)-(612,25),2,bf
Text4:
COLOR 1,2:xyPTAB 35,8:PRINT"ÄNDERN";PTAB(137)"ANFANG";PTAB(226)"<<<";
PRINT PTAB(283)"<";PTAB(335)">";PTAB(377)">>>";PTAB(450)"ENDE";
PRINT PTAB(539)"LÖSCHEN"
LOCATE 3,5:PRINT"KUVERTNUMMER SUCHEN";PTAB(243)"EIN KUVERT DRUCKEN";
PRINT PTAB(432)"FETTDRUCK";PTAB(523)"DOPPELDRUCK";:COLOR 1,0
RETURN
650 FOR i=1 TO jj:NEXT i:RETURN
DateiNameEingabe:
wt$="Dateinamen eingeben: ":GOSUB OpenWin4
c$=STRING$(14,32):getline 2,3,14,c$,3,0
c$=LEFT$(c$,p-1):FOR f=LEN(c$) TO 13:c$=c$+fuell$:NEXT f
dn$="Daten/"+c$+Suffix$
WINDOW CLOSE 4:c$="":RETURN
OpenWin4:
WINDOW 4,wt$,(218,100)-(406,150),0,SNr
LINE (14,5)-(130,18),,b :REM *** Rahmen um Cursor
LINE (14,28)-(80,42),2,bf:LINE (110,28)-(176,42),2,bf:COLOR 1,2
LOCATE 5,1:PRINT PTAB(38)"OK";PTAB(116)"ABBRUCH";:COLOR 1,0:RETURN
Info:
WINDOW 5,"Info:",(218,100)-(406,150),0,SNr:RETURN
Kopfzeile:
CLS
LOCATE 1,2:COLOR 2:PRINT"Kuvertnummer:":COLOR 1
LOCATE 1,23:COLOR 2:PRINT"Frei BASIC:";:COLOR 1:PRINT FRE(1)
LOCATE 1,44:COLOR 2:PRINT"Frei System:";:COLOR 1:PRINT FRE(-1)
LOCATE 3,2:COLOR 2:PRINT"Datens. belegt:";:COLOR 1:PRINT an:COLOR 2
LOCATE 3,23:PRINT"Datens. frei:";:COLOR 1:PRINT n-an:COLOR 2
LOCATE 3,44:PRINT"Dateiname: ";:COLOR 1:PRINT LEFT$(dn$,20)
LOCATE 5,8:PRINT"Nr.:":LOCATE 5,25:PRINT"TA:"
LOCATE 5,41:PRINT"NR:":LOCATE 5,58:PRINT"LÄN:"
LOCATE 6,8:PRINT"A:":LOCATE 6,41:PRINT"B:"
RETURN
Loeschen:
LOCATE 1,16:PRINT" "
LOCATE 5,12:PRINT SPACE$(8):LOCATE 5,28:PRINT SPACE$(8)
LOCATE 5,44:PRINT SPACE$(8):LOCATE 5,62:PRINT SPACE$(8)
LOCATE 6,10:PRINT SPACE$(29):LOCATE 6,43:PRINT SPACE$(29)
LINE(51,54)-(310,168),0,bf:LINE(316,54)-(573,168),0,bf
FOR ll=0 TO 2:LOCATE 23+ll,12:PRINT SPACE$(la1(ll)):NEXT ll
RETURN
Rahmen:
LINE (48,25)-(576,205),1,b:LINE (48,52)-(576,52),1
LINE (48,170)-(576,170),1:LINE (313,52)-(313,170),1
RETURN
NrAB:
LOCATE 23,8:PRINT"Nr:":LOCATE 24,8:PRINT" A:":LOCATE 25,8:PRINT" B:"
RETURN
GetDir:
counter=1:Dir$=Dir$+CHR$(0):Lo&=Lock&(SADD(Dir$),-2)
IF Lo&=0 THEN ERROR 75
Info&=AllocRemember&(0,252,65538)
IF Info&=0 THEN CALL UnLock&(Lo&):ERROR 76
suc&=Examine&(Lo&,Info&)
IF suc&=0 THEN GOSUB Fin:ERROR 77
again:
DirName&=Info&+8
FOR search=0 TO 29
check=PEEK(DirName&+search)
IF check<>0 THEN check$=check$+CHR$(check) :ELSE search=29
NEXT search
IF RIGHT$(check$,8)=Suffix$ THEN
DirName$(counter)=check$:check$=""
DirSize&(counter)=PEEKL(Info&+124)
DirBlks&(counter)=PEEKL(Info&+128)
counter=counter+1
ELSE
check$=""
END IF
suc&=ExNext&(Lo&,Info&)
IF suc&=0 THEN
GOTO Fin
ELSE
IF counter<=anz THEN again
END IF
Fin: CALL FreeRemember&(0,-1):CALL UnLock&(Lo&)
RETURN
ScnT: st&=SADD(ra$(5)):CALL SetWindowTitles&(wpr&,-1,st&):RETURN
DNam: LOCATE 2,20:PRINT "Dateiname: ";LEFT$(dn$,20):RETURN
st: SetTitle mo$(0):RETURN
'----------
Einrichten:
'----------
MENU 1,1,0:MENU OFF:CLS:SetTitle mo$(1):GOSUB DateiNameEingabe
IF abbruch=1 AND RelOffen=0 THEN
abbruch=0:WINDOW CLOSE 4:GOSUB st:MENU 1,1,1
dn$="":c$="":CLS:MENU ON:RETURN
END IF
IF dn$="Daten/"+STRING$(14,46)+Suffix$ THEN
WINDOW CLOSE 4:GOSUB Info:COLOR 3,0:LOCATE 3,5:PRINT ra$(6)
GOSUB 650:WINDOW CLOSE 5:GOSUB st:MENU 1,1,1
dn$="":c$="":CLS:MENU ON:RETURN
END IF
GOSUB DNam:CALL Dateitest(dn$,erg&)
IF erg&>0 THEN
LOCATE 10,24:PRINT"Die Datei existiert bereits!"
Requester" Überschreiben?","JA"," NEIN"
IF req=2 THEN
GOSUB st:MENU 1,1,1:dn$="":c$="":CLS:MENU ON:RETURN
ELSE
loesch$=dn$:KILL loesch$:loesch$=""
END IF
END IF
Requester"Alles OK?","JA"," NEIN"
ON req GOTO Wa2,Wb2
Wa2: gespeichert=1:GOTO Eingabe
Wb2: GOTO Einrichten
Oeffnen2:
OPEN"R",#2,dn$,Satzlaenge
FIELD#2,8 AS a$(0),8 AS a$(1),8 AS a$(2),8 AS a$(3),29 AS a$(4),29 AS a$(5),868 AS b$,3 AS c$(0),60 AS c$(1),60 AS c$(2)
an=LOF(2)/Satzlaenge:RelOffen=1:RETURN
'-------
Eingabe:
'-------
IF RelOffen=0 THEN GOSUB Oeffnen2:fa=0
SatzNr=an+1:CALL ActivateWindow&(wpr&)
CLS:SetTitle mo$(3):GOSUB MenuesAus:GOSUB Rahmen
Eingabe2:
IF an=n THEN
GOSUB Info:PRINT:PRINT ra$(3):GOSUB 650
WINDOW CLOSE 5:GOSUB MenuesAn:MENU 1,1,0:GOTO DatAus
END IF
GOSUB Loeschen
LOCATE 1,2:COLOR 2:PRINT"Kuvertnummer:";:COLOR 1:PRINT an+1
LOCATE 1,23:COLOR 2:PRINT"Frei BASIC:";:COLOR 1:PRINT FRE(1)
LOCATE 1,44:COLOR 2:PRINT"Frei System:";:COLOR 1:PRINT FRE(-1)
LOCATE 3,2:COLOR 2:PRINT"Datens. belegt:";:COLOR 1:PRINT an:COLOR 2
LOCATE 3,23:PRINT"Datens. frei:";:COLOR 1:PRINT n-an:COLOR 2
LOCATE 3,44:PRINT"Dateiname: ";:COLOR 1:PRINT LEFT$(dn$,20)
LOCATE 5,8:PRINT"Nr.:":LOCATE 5,25:PRINT"TA:"
LOCATE 5,41:PRINT"NR:":LOCATE 5,58:PRINT"LÄN:"
LOCATE 6,8:PRINT"A:":LOCATE 6,41:PRINT"B:":GOSUB NrAB
Nein:
IF fa=1 THEN
c$=a$(0):getline 5,12,8,c$,3,0: LSET a$(0)=c$ 'Kopf
c$=a$(1):getline 5,28,8,c$,3,0: LSET a$(1)=c$
c$=a$(2):getline 5,44,8,c$,3,0: LSET a$(2)=c$
c$=a$(3):getline 5,62,8,c$,3,0: LSET a$(3)=c$
c$=a$(4):getline 6,10,29,c$,3,0:LSET a$(4)=c$
c$=a$(5):getline 6,43,29,c$,3,0:LSET a$(5)=c$
ELSE
c$=" ":getline 5,12,8,c$,3,0: LSET a$(0)=c$
c$="Chrome ":getline 5,28,8,c$,3,0: LSET a$(1)=c$
c$="DOLBY C ":getline 5,44,8,c$,3,0: LSET a$(2)=c$
c$="90 ":getline 5,62,8,c$,3,0: LSET a$(3)=c$
c$=SPACE$(29):getline 6,10,29,c$,3,0:LSET a$(4)=c$
c$=SPACE$(29):getline 6,43,29,c$,3,0:LSET a$(5)=c$
END IF
'--------------------------------------------------------- Seite A
IF fa=1 THEN FOR f=0 TO 13:f$(f)=b$(f):NEXT f:GOTO Nein1
FOR i=0 TO 13:f$(i)=STRING$(la(i),32):NEXT i
Nein1:
intext 13,8,8,la(),f$(),3,0
FOR f=0 TO 13:b$(f)=f$(f):AB$=AB$+b$(f):NEXT f
'--------------------------------------------------------- Seite B
IF fa=1 THEN FOR f=0 TO 13:f$(f)=b$(f+14):NEXT f:GOTO Nein2
FOR f=0 TO 13:f$(f)=STRING$(la(f),32):NEXT f
Nein2:
intext 13,8,41,la(),f$(),3,0
FOR f=0 TO 13:b$(f+14)=f$(f):AB$=AB$+b$(f+14):NEXT f
LSET b$=AB$:AB$=""
'--------------------------------------------------------- Fuß
IF fa=1 THEN FOR f=0 TO 2:f$(f)=c$(f):NEXT f:GOTO Nein3
FOR f=0 TO 2:f$(f)=STRING$(la1(f),32):NEXT f
Nein3:
intext 2,23,12,la1(),f$(),3,0
FOR f=0 TO 2:LSET c$(f)=f$(f):NEXT f
'---------------------------------------------------------
WINDOW 8,"Eingaben OK?",(200,100)-(440,150),0,SNr
LINE(20,10)-(80,40),2,bf:LINE(90,10)-(150,40),2,bf
LINE(160,10)-(220,40),2,bf:COLOR 1,2
LOCATE 4,1:PRINT PTAB(42)"JA";PTAB(104)"NEIN";PTAB(163)"ABBRUCH":COLOR 1,0
Wa3:
WHILE MOUSE(0)=0:GOSUB Paint3:SLEEP:WEND
tst=MOUSE(0):x=MOUSE(1):y=MOUSE(2):win=WINDOW(0)
IF win<>8 THEN Wa3
IF win=8 AND y>10 AND y<40 THEN
IF x>20 AND x<80 THEN
xp=22:PAINT(xp,12),1,0:px=xp:IF MOUSE(0)<0 THEN Wa3
WINDOW CLOSE 8:GOSUB SatzSchreiben:fa=0:GOTO Eingabe2
END IF
IF x>90 AND x<150 THEN
xp=92:PAINT(xp,12),1,0:px=xp:IF MOUSE(0)<0 THEN Wa3
WINDOW CLOSE 8:fa=1:GOTO Nein
END IF
IF x>160 AND x<220 THEN
xp=162:PAINT(xp,12),1,0:px=xp:IF MOUSE(0)<0 THEN Wa3
WINDOW CLOSE 8:GOSUB SatzSchreiben:tt=1:bst=1:fa=0
CLOSE #2:RelOffen=0:GOSUB MenuesAn:MENU 2,1,1:GOTO DatAus
END IF
END IF
GOTO Wa3
Paint3:
PAINT(px,12),2,0:COLOR 1,2
LOCATE 4,1:PRINT PTAB(42)"JA";PTAB(104)"NEIN";PTAB(163)"ABBRUCH":COLOR 1,0
RETURN
SatzSchreiben:
PUT #2,SatzNr:an=SatzNr:SatzNr=SatzNr+1:RETURN
'-----
Farbe:
'-----
Farbwahl
RETURN
KuvertSuchen:
MENU OFF:SetTitle"Kuvert suchen"
wt$="Kuvertnummer eingeben: ":GOSUB OpenWin4
c$=STRING$(3,32):getline 2,3,3,c$,3,0
IF abbruch=1 THEN
abbruch=0:WINDOW CLOSE 4:GOSUB ModusSetzen:MENU ON:RETURN
END IF
IF c$=SPACE$(3) THEN
WINDOW CLOSE 4:GOSUB Info:LOCATE 3,5:COLOR 3,0:PRINT ra$(6)
GOSUB 650:WINDOW CLOSE 5:GOSUB ModusSetzen:MENU ON:RETURN
END IF
record=VAL(c$)
IF record<1 OR record>an THEN
WINDOW CLOSE 4:GOSUB Info:LOCATE 3,1:COLOR 3
PRINT"Nur Kuvert ";:COLOR 1:PRINT"1 bis "an:GOSUB 650
WINDOW CLOSE 5:GOTO KuvertSuchen
END IF
WINDOW CLOSE 4:r=record:GOSUB ModusSetzen:MENU ON:RETURN
ModusSetzen: SetTitle mo$(4):RETURN
KuvertLoeschen:
SetTitle"Kuvert löschen"
Requester"Kuvert löschen?","JA","ABBRUCH"
ON req GOTO JaL,NeinL
JaL: GOSUB Info:LOCATE 2,2:PRINT"Diese Funktion ist"
PRINT "noch nicht":PRINT "implementiert!":GOSUB 650:WINDOW CLOSE 5
NeinL: GOSUB ModusSetzen:RETURN
'------
DatAus:
'------
IF RelOffen=0 THEN GOSUB Oeffnen2
GOSUB ModusSetzen:GOSUB Kopfzeile:GOSUB Rahmen:GOSUB NrAB
MENU 1,0,1:MENU 1,3,1:MENU 2,1,1:MENU 3,0,1:MENU ON
KaL:
IF r>an THEN r=an
IF r<1 THEN r=1
GET #2,r:GOSUB Loeschen
LOCATE 1,15:PRINT r
LOCATE 5,12:PRINT a$(0):LOCATE 5,28:PRINT a$(1)
LOCATE 5,44:PRINT a$(2):LOCATE 5,62:PRINT a$(3)
LOCATE 6,10:PRINT a$(4):LOCATE 6,43:PRINT a$(5)
z=0:FOR i=1 TO 868 STEP 31:b$(z)=MID$(b$,i,31):z=z+1:NEXT i
FOR f=0 TO 13
LOCATE 8+f,8:PRINT b$(f):LOCATE 8+f,41:PRINT b$(f+14)
NEXT f
FOR f=0 TO 2:LOCATE 23+f,12:PRINT c$(f):NEXT f
IF r=1 THEN
MENU OFF:SOUND 1000,4,255,0:GOSUB Info:LOCATE 3,9:COLOR 3,0
PRINT ra$(1):COLOR 1:GOSUB 650:WINDOW CLOSE 5:MENU ON
END IF
IF r=an THEN
MENU OFF:SOUND 1000,4,255,0:GOSUB Info:LOCATE 3,10:COLOR 3,0
PRINT ra$(2):COLOR 1:GOSUB 650:WINDOW CLOSE 5:MENU ON
END IF
IF tt=1 THEN tt=0:GOSUB ModusSetzen
IF bs=1 AND bst=1 THEN bst=0:GOSUB ScnT
Wa4:
tst=MOUSE(0)
WHILE MOUSE(0)=0:SLEEP:WEND:x=MOUSE(3):y=MOUSE(4):win=WINDOW(0)
IF win<>3 THEN Wa4
IF y>0 AND y<10 AND win=3 THEN
IF x>12 AND x<104 THEN GOSUB Aendern:GOTO KaL
IF x>114 AND x<206 THEN r=1 :GOTO KaL 'ANFANG
IF x>215 AND x<259 THEN r=r-1:GOTO KaL '<<<
IF x>265 AND x<309 THEN
IF MOUSE(0)<0 THEN Wa4
r=r-1:GOTO KaL '<
END IF
IF x>315 AND x<359 THEN
IF MOUSE(0)<0 THEN Wa4
r=r+1:GOTO KaL '>
END IF
IF x>365 AND x<409 THEN r=r+1:GOTO KaL '>>>
IF x>418 AND x<510 THEN r=an:GOTO KaL 'ENDE
IF x>520 AND x<612 THEN GOSUB KuvertLoeschen:GOTO Wa4
END IF
IF y>14 AND y<25 AND win=3 THEN
IF x>12 AND x<206 THEN
IF MOUSE(0)<0 THEN Wa4
GOSUB KuvertSuchen:GOTO KaL
END IF
IF x>215 AND x<409 THEN GOSUB Kuvert
IF x>418 AND x<510 THEN GOSUB FettDruck
IF x>520 AND x<612 THEN GOSUB DoppelDruck
END IF
GOTO Wa4
FettDruck:
Requester"Fettdruck?","JA"," NEIN"
IF req=1 THEN Fett=1:Doppel=0:RETURN
IF req=2 THEN Fett=0:Doppel=0:RETURN
DoppelDruck:
Requester"Doppeldruck?","JA"," NEIN"
IF req=1 THEN Doppel=1:Fett=0:RETURN
IF req=2 THEN Doppel=0:Fett=0:RETURN
Aendern:
CALL ActivateWindow&(wpr&)
MENU OFF:SetTitle"Kuvert ändern"
c$=a$(0):getline 5,12,8,c$,3,0: LSET a$(0)=c$ 'Kopf
c$=a$(1):getline 5,28,8,c$,3,0: LSET a$(1)=c$
c$=a$(2):getline 5,44,8,c$,3,0: LSET a$(2)=c$
c$=a$(3):getline 5,62,8,c$,3,0: LSET a$(3)=c$
c$=a$(4):getline 6,10,29,c$,3,0:LSET a$(4)=c$
c$=a$(5):getline 6,43,29,c$,3,0:LSET a$(5)=c$
'----------------------------------------------- Seite A
FOR f=0 TO 13:f$(f)=b$(f):NEXT f
intext 13,8,8,la(),f$(),3,0
FOR f=0 TO 13:b$(f)=f$(f):AB$=AB$+b$(f):NEXT f
'----------------------------------------------- Seite B
FOR f=0 TO 13:f$(f)=b$(f+14):NEXT f
intext 13,8,41,la(),f$(),3,0
FOR f=0 TO 13:b$(f+14)=f$(f):AB$=AB$+b$(f+14):NEXT f
LSET b$=AB$:AB$=""
'----------------------------------------------- Fuß
FOR f=0 TO 2:f$(f)=c$(f):NEXT f
intext 2,23,12,la1(),f$(),3,0
FOR f=0 TO 2:LSET c$(f)=f$(f):NEXT f:PUT #2,r
'-----------------------------------------------
GOSUB Info:LOCATE 3,5:COLOR 3:PRINT"Kuvert geändert":COLOR 1:GOSUB 650
WINDOW CLOSE 5:GOSUB ModusSetzen:MENU ON:RETURN
'-----
Laden:
'-----
WINDOW 12,,(142,36)-(461,168),0,SNr
openreq=1:qo=0:x=0:y=0:MENU 1,1,0:GOSUB MenuesAus
SetTitle mo$(8):pa1=0:qa=1
LINE (5,5)-(315,136),1,b:LINE (7,7)-(313,134),1,b
LINE (14,29)-(292,91),1,b:LINE (292,29)-(307,91),1,b
LINE(292,29)-(307,49),1,b:LINE(292,71)-(307,91),1,b
LINE(294,31)-(305,47),2,bf:LINE(294,73)-(305,89),2,bf
LINE (13,99)-(307,113),1,b
LINE (14,116)-(154,131),1,b:LINE (16,118)-(152,129),2,bf
LINE (167,116)-(307,131),1,b:LINE (169,118)-(305,129),2,bf:COLOR 2,0
LOCATE 3,4:PRINT "Dateinamen":LOCATE 3,21:PRINT"Bytes"
LOCATE 3,31:PRINT "Blöcke":COLOR 1,2
LOCATE 16,9:PRINT"Öffnen":LOCATE 16,27:PRINT"Abbruch":COLOR 1,0
IF gespeichert=1 THEN
FOR i=0 TO anz:DirName$(i)="":DirSize&(i)=0:DirBlks&(i)=0:NEXT i
SetTitle "Verzeichnis lesen":Dir$="Daten":GOSUB GetDir
gespeichert=0:SortDir:SetTitle mo$(8)
END IF
FOR i=1 TO 7
IF DirSize&(i)=0 THEN lweiter
LOCATE 4+i,4:PRINT LEFT$(DirName$(i),14)
LOCATE 4+i,20:PRINT DirSize&(i)
LOCATE 4+i,30:PRINT DirBlks&(i)
lweiter:
NEXT i
Wa6:
WHILE MOUSE(0)=0:GOSUB Paint4:SLEEP:WEND
tst=MOUSE(0):x=MOUSE(1):y=MOUSE(2):win=WINDOW(0)
IF win<>12 THEN Wa6
IF win=12 AND openreq=1 THEN
IF x>294 AND x<305 AND y>31 AND y<47 THEN
IF pa1=0 THEN xp=296:yp=33:PAINT(xp,yp),1,0:px=xp:py=yp:pa1=1
GOSUB Sab 'scroll ab
END IF
IF x>294 AND x<305 AND y>73 AND y<89 THEN
IF pa1=0 THEN xp=296:yp=75:PAINT(xp,yp),1,0:px=xp:py=yp:pa1=1
GOSUB Sauf 'scroll auf
END IF
IF x>16 AND x<152 AND y>118 AND y<129 THEN
xp=18:yp=120:PAINT(xp,yp),1,0:px=xp:py=yp:IF MOUSE(0)<0 THEN Wa6
GOTO DOpen 'Datei öffnen
END IF
IF x>169 AND x<305 AND y>118 AND y<129 THEN
xp=171:yp=120:PAINT(xp,yp),1,0:px=xp:py=yp:IF MOUSE(0)<0 THEN Wa6
GOTO OEnd 'Abbruch
END IF
IF x>14 AND x<292 AND y>29 AND y<91 THEN
IF MOUSE(0)<0 THEN Wa6
GOSUB PText 'Print Text in Req
END IF
END IF
pa1=0
GOTO Wa6
Sab:
IF DirSize&(qa-1)=0 OR counter<7 OR qa=1 THEN RETURN
SCROLL (15,31)-(291,87),0,8
LOCATE 5,4:PRINT LEFT$(DirName$(qa-1),14)
LOCATE 5,20:PRINT DirSize&(qa-1)
LOCATE 5,30:PRINT DirBlks&(qa-1)
qa=qa-1:RETURN
Sauf:
IF DirSize&(qa+7)=0 OR counter<7 OR qa=counter-6 THEN RETURN
SCROLL (15,31)-(291,87),0,-8
LOCATE 11,4:PRINT LEFT$(DirName$(qa+7),14)
LOCATE 11,20:PRINT DirSize&(qa+7)
LOCATE 11,30:PRINT DirBlks&(qa+7)
qa=qa+1:RETURN
OEnd:
IF RelOffen=0 THEN
openreq=0:CLS:GOSUB st
MENU 1,0,1:MENU 1,1,1:MENU 1,3,0:WINDOW CLOSE 12:MENU ON:RETURN
END IF
IF RelOffen=1 THEN
openreq=0:GOSUB ModusSetzen:WINDOW CLOSE 12:GOSUB MenuesAn:RETURN
END IF
Paint4:
PAINT(px,py),2,0:COLOR 1,2
LOCATE 16,9:PRINT"Öffnen":LOCATE 16,27:PRINT"Abbruch":COLOR 1,0
RETURN
PText:
qo=INT((y-31)/8)+qa
IF qo>counter THEN qo=counter
LINE(14,100)-(306,112),0,bf
LOCATE 14,4:PRINT LEFT$(DirName$(qo),14)
IF DirSize&(qo)=0 THEN RETURN
LOCATE 14,20:PRINT DirSize&(qo)
LOCATE 14,30:PRINT DirBlks&(qo)
RETURN
DOpen:
IF LEFT$(DirName$(qo),14)="" THEN Wa6
CLS:WINDOW CLOSE 12
IF RelOffen=1 THEN CLOSE 2:RelOffen=0:GOSUB Schliessen:SetTitle mo$(8)
dn$="Daten/"+DirName$(qo)
Dateigroesse&=DirSize&(qo)
GOSUB MenuesAn:r=1:tt=1:GOTO DatAus
'----------
Schliessen:
'----------
MENU OFF:SetTitle"Schließe Datei":CLS
IF RelOffen=1 THEN CLOSE 2:RelOffen=0
FOR i=0 TO 5:a$(i)="":NEXT i:b$="":
FOR i=0 TO m:b$(i)="":f$(i)="":NEXT i
FOR i=0 TO 2:c$(i)="":NEXT i
dn$="":an=0:MENU ON
IF MENU(1)=3 THEN GOSUB mod7:MENU ON:RETURN Wa1
RETURN
mod7:
GOSUB st:GOSUB MenuesAus:MENU 1,0,1:MENU 1,1,1:MENU 1,3,0
RETURN
'-------------
DateiLoeschen:
'-------------
MENU OFF:SetTitle mo$(9)
wt$="Dateinamen eingeben: ":GOSUB OpenWin4
c$=STRING$(14,32):getline 2,3,14,c$,3,0
c$=LEFT$(c$,p-1):FOR f=LEN(c$) TO 13:c$=c$+fuell$:NEXT f
IF abbruch=1 AND RelOffen=0 THEN
abbruch=0:WINDOW CLOSE 4:GOSUB st:MENU ON:RETURN
END IF
IF abbruch=1 AND RelOffen=1 THEN
abbruch=0:WINDOW CLOSE 4:GOSUB ModusSetzen:MENU ON:RETURN
END IF
IF c$=STRING$(14,46) AND RelOffen=1 THEN
c$="":WINDOW CLOSE 4:GOSUB Info:LOCATE 3,5:COLOR 3,0:PRINT ra$(6)
GOSUB 650:WINDOW CLOSE 5:GOSUB ModusSetzen:MENU ON:RETURN
END IF
IF c$=STRING$(14,46) AND RelOffen=0 THEN
c$="":WINDOW CLOSE 4:GOSUB Info:LOCATE 3,5:COLOR 3,0:PRINT ra$(6)
GOSUB 650:WINDOW CLOSE 5:GOSUB st:MENU ON:RETURN
END IF
WINDOW CLOSE 4:GOSUB Info
loesch$="Daten/"+c$+Suffix$:KILL loesch$
COLOR 3:PRINT"Datei:":COLOR 1
PRINT LEFT$(loesch$,14):PRINT " ist gelöscht."
GOSUB 650:WINDOW CLOSE 5:gespeichert=1
IF RelOffen=1 THEN GOSUB ModusSetzen:MENU ON:RETURN
IF RelOffen=0 THEN GOSUB st:MENU ON:RETURN
'----
Verz:
'----
MENU OFF:WINDOW 8,,(205,40)-(425,185),0,SNr
FILES "Daten"
COLOR 3:PRINT TAB(3)"Linke Maustaste drÜcken":COLOR 1
Vz:
tst=MOUSE(0):WHILE MOUSE(0)=0:WEND:x=MOUSE(1):y=MOUSE(2)
IF x>1 AND x<WINDOW(2) AND y>1 AND y<WINDOW(3) AND WINDOW(0)=8 THEN
WINDOW CLOSE 8:MENU ON:RETURN
END IF
GOTO Vz
'----
Ende:
'----
SetTitle mo$(10):Requester"ZUM MENÜ? ","JA"," NEIN"
ON req GOTO JaEnde,NeinEnde
JaEnde:
MENU RESET:LIBRARY CLOSE:WINDOW CLOSE 3:CLOSE 2
IF bs=1 THEN SCREEN CLOSE SNr
WINDOW 1,"BASIC",(0,0)-(617,241),31,-1
RUN "KKK.MENUE"
NeinEnde:
IF RelOffen=0 THEN GOSUB st:RETURN
IF RelOffen=1 THEN DatAus
'------
Kuvert:
'------
SetTitle"Ein Kuvert drucken"
Requester"Drucker OK?","JA","ABBRUCH"
IF req=1 THEN Drucken
IF req=2 THEN GOSUB ModusSetzen:RETURN
Drucken:
MENU OFF
GOSUB Info:LOCATE 3,2:COLOR 3:PRINT"Drucke Kuvert";:COLOR 1:PRINT r
OPEN "prt:" FOR OUTPUT AS 1
PRINT#1,InitPrinter$;NoMargin$;CondOn$;NLQOn$;
IF Fett=1 THEN PRINT#1,CHR$(27)+"[1m" :REM Fettdruck ein
IF Fett=0 THEN PRINT#1,CHR$(27)+"[22m" :REM Fettdruck aus
IF Doppel=1 THEN PRINT#1,CHR$(27)+"[4"+af$+"z":REM Doppeldruck ein
IF Doppel=0 THEN PRINT#1,CHR$(27)+"[3"+af$+"z":REM Doppeldruck aus
'-------------------------------------------------- Kopf
FOR i=0 TO 67:PRINT#1,"_";:NEXT i
PRINT#1,"":PRINT#1,"| ";
FOR i=0 TO 3:PRINT#1,tf$(i);a$(i)" ";:NEXT i
PRINT#1,"|"
PRINT#1,UndlnOn$;
PRINT#1,"| A:";a$(4)" ";"B:";a$(5)" ";
PRINT#1,UndlnOff$ "|"
'-------------------------------------------------- Seite A/B Titel
FOR i=0 TO 12
PRINT#1,"| "b$(i)" | "b$(i+14)" |"
NEXT
PRINT#1,UndlnOn$;"| ";b$(13);" | ";b$(27);" ";UndlnOff$;"|"
'-------------------------------------------------- Fuß
PRINT#1,"| Nr: ";c$(0)
PRINT#1,"| A: ";c$(1);" |"
PRINT#1,UndlnOn$;"| B: ";c$(2);" "
PRINT#1,UndlnOff$;
'--------------------------------------------------
FOR i=0 TO 2:PRINT#1,"|"SPACE$(67)"|":NEXT
pr$="| Datei:"+LEFT$(dn$,20)
PRINT#1,UndlnOn$;pr$;LEFT$(SPACE$(68),68-LEN(pr$));UndlnOff$ "| "
PRINT#1,InitPrinter$
dr=dr+1:IF dr=2 THEN dr=0:PRINT #1,CHR$(12)
WINDOW CLOSE 5:CLOSE #1:GOSUB ModusSetzen:MENU ON:RETURN
OpenWin11:
MENU OFF:MENU 3,0,0:WINDOW 11,WinText$,(50,37)-(572,166),8,SNr
COLOR 0,1:CLS
RETURN
Prg:
WinText$="Das Programm":GOSUB OpenWin11
LOCATE 2,8:PRINT Version$
LOCATE 4,7:PRINT" Von Lothar Berndt, 4240 Emmerich 1"
LOCATE 6,7:PRINT" Erstellt im Jahr 1990"
LOCATE 8,7:PRINT n"Datensätze pro Datei"
LOCATE 10,7:PRINT" 28 Titel pro Kuvert"
LOCATE 12,7:PRINT" Feldlänge 31 Zeichen";
GOTO modus6
Datei:
WinText$="Datei":GOSUB OpenWin11
LOCATE 5,4:PRINT"Aktuelle Datei..............: "LEFT$(dn$,20)
LOCATE 6,4:PRINT"Dateigröße in Bytes.........:";Dateigroesse&
LOCATE 7,4:PRINT"Feie Bytes Systemspeicher...:"FRE(-1)
LOCATE 8,4:PRINT"Anzahl Datensätze ..........:";an
LOCATE 9,4:PRINT"Anzahl Felder...............:";m+1+9
LOCATE 10,4:PRINT"Datensatzlänge..............:";Satzlaenge
GOTO modus6
DFormat:
WinText$="Format":GOSUB OpenWin11
LOCATE 2,5:PRINT"Nr., TA, NR, LÄN je 8 Zeichen"
LOCATE 4,5:PRINT"A: und B: Kopfzeile je 29 Zeichen"
LOCATE 6,5:PRINT"Felder fÜr Titel je 31 Zeichen"
LOCATE 8,5:PRINT"Nr: ";la1(0);"Zeichen"
LOCATE 9,5:PRINT" A: ";la1(1);"Zeichen"
LOCATE 10,5:PRINT" B: ";la1(2);"Zeichen"
GOTO modus6
Kdruck:
WinText$="Kuvert drucken":GOSUB OpenWin11
PRINT
PRINT" Vorgesehen ist der Druck auf Einzelblätter im Format DIN A4."
PRINT" Vier KassettenhÜllen passen auf ein DIN A4-Blatt. Auf die lin-"
PRINT" ke Seite des Blattes werden zwei HÜllen untereinander gedruckt."
PRINT" Dann wird durch ein FF (Form Feed) an den Drucker, das Blatt"
PRINT" ausgeworfen. Um die anderen zwei HÜllen zu drucken, dreht man"
PRINT" das Blatt um 180° und steckt es erneut in den Drucker. Drucken"
PRINT" auf Endlospapier ist auch möglich. Um Papier zu sparen, kann"
PRINT" man nach dem drucken der Hälfte, das Papier abtrennen und um"
PRINT" 180° gedreht, erneut durchlaufen lassen."
GOTO modus6
Tas:
WinText$="Tastaturbelegung beim eingeben/ändern":GOSUB OpenWin11
PRINT
PRINT" RETURN = ein Feld tiefer, leere Felder werden als"
PRINT" Leerfelder gesichert ( chr$(32) )!"
PRINT" CURSORTASTEN = ab, auf, rechts, links."
PRINT" DEL = löscht ein Zeichen unter dem Cursor,"
PRINT" nachfolgende Zeichen rÜcken nach links.
PRINT" BACKSPACE = löscht ein Zeichen links vom Cursor,"
PRINT" nachfolgende Zeichen rÜcken nach links."
PRINT" F10 = löscht das aktuelle Feld (wo der Cursor ist)."
PRINT" ESC = erzwingt den Abbruch der Eingabe im aktuellen"
PRINT" Feld. Da die Felder vorher mit Leerzeichen"
PRINT" gefÜllt wurden, werden leere Felder als"
PRINT" Leerfelder gesichert (wie bei RETURN)!"
PRINT" SPACE = schiebt den Text rechts vom Cursor nach rechts."
PRINT" LINKE MAUST. = positioniert den Cursor wo d. Mauszeiger steht.";
modus6:
WHILE (WINDOW(7)<>0 AND WINDOW(1)=11):WEND
WINDOW CLOSE 11:WINDOW OUTPUT WNr:MENU 3,0,1:MENU ON:tst=MOUSE(0)
COLOR 1,0:RETURN
'------
Fehler:
'------
MENU OFF
IF ERR=14 THEN Fehler$="Arbeitsspeicher nicht ausreichend."
IF ERR=49 THEN Fehler$="Legen Sie die Diskette in das Laufwerk!"
IF ERR=52 THEN Fehler$="Falsche Dateinummer."
IF ERR=53 THEN Fehler$="Datei nicht gefunden."
IF ERR=54 THEN Fehler$="Falscher Dateityp."
IF ERR=55 THEN Fehler$="Die Datei ist bereits geöffnet."
IF ERR=57 THEN Fehler$="Geräte Ein- Ausgabefehler."
IF ERR=61 THEN Fehler$="Diskette ist voll."
IF ERR=62 THEN Fehler$="Eingabe nach logischem Dateiende."
IF ERR=63 THEN Fehler$="UngÜltige Satznummer."
IF ERR=64 THEN Fehler$="Ungültiger Dateiname."
IF ERR=68 THEN Fehler$="Gerät ist nicht verfÜgbar."
IF ERR=70 THEN Fehler$="Diskette ist schreibgeschÜtzt."
IF ERR=74 THEN Fehler$="Unbekannte Diskette."
IF ERR=75 THEN Fehler$="Verzeichnis existiert nicht!"
IF ERR=76 THEN Fehler$="Kein Speicherplatz frei!"
IF ERR=77 THEN Fehler$="Verzeichnis konnte nicht gefunden werden!
WINDOW 99,,(0,150)-(630,185),0,SNr
LOCATE 1,3:PRINT"Es ist ein Fehler aufgetreten."
LOCATE 3,3:COLOR 3:PRINT ERR;" ";Fehler$:COLOR 1
LOCATE 5,3:PRINT"Beheben Sie den Fehler und drÜcken danach die Taste 'W'.";
Wa5: x$=INKEY$:IF x$="" THEN Wa5
IF UCASE$(x$)<>"W" THEN Wa5
WINDOW CLOSE 99:Fehler$="":MENU ON
IF ERR=49 OR ERR=61 OR ERR=70 THEN
RESUME
ELSE
RESUME FehlerEnd
END IF
FehlerEnd:
ON ERROR GOTO 0:WINDOW WNr:CLS:GOSUB Schliessen:GOSUB mod7
WinText$="<--- WEITER":GOSUB OpenWin11:COLOR 3,1:PRINT
PRINT TAB(26)"KEINE PANIK":COLOR 0,1:LOCATE 5
PRINT TAB(10)"Es ist ein Fehler aufgetreten, den ich nicht":PRINT
PRINT TAB(7)"beheben konnte. Nach dem schließen dieses Fensters":PRINT
PRINT TAB(10)"können Sie eine Datei öffnen oder einrichten."
GOSUB modus6:ON ERROR GOTO Fehler
RETURN Wa1
'--------
ControlC:
'--------
MENU RESET:LIBRARY CLOSE:WINDOW CLOSE 3:WINDOW CLOSE 1:CLOSE
IF bs=1 THEN SCREEN CLOSE SNr
WINDOW 1,"BASIC",(0,0)-(617,241),31,-1
END
'--------------------------
'*** Sub Unterprogramme ***
'--------------------------
SUB xyPTAB (x,y) STATIC:POKEW WINDOW(8)+36,x:POKEW WINDOW(8)+38,y:END SUB
SUB Dateitest (DNa$,Flag&) STATIC 'dos.bmap
ln$=DNa$+CHR$(0)
Flag&=Lock&(SADD(ln$),-2)
CALL UnLock&(Flag&)
END SUB
SUB SetTitle (wind$) STATIC 'intuition.bmap
SHARED wpr&:wind$=wind$+CHR$(0):wt&=SADD(wind$)
CALL SetWindowTitles&(wpr&,wt&,-1)
END SUB
SUB Requester (me$,m1$,m2$) STATIC
SHARED req,SNr:MENU OFF
WINDOW 7,"Requester",(218,160)-(406,210),0,SNr
LOCATE 2,2:PRINT me$
LINE(14,28)-(80,42),2,bf:LINE(110,28)-(176,42),2,bf:COLOR 1,2
LOCATE 5,1:PRINT PTAB(38)m1$;PTAB(116)m2$;:COLOR 1,0
Wa11:
tst=MOUSE(0):WHILE MOUSE(0)=0:WEND:x=MOUSE(3):y=MOUSE(4)
IF WINDOW(0)=7 AND y>28 AND y<42 THEN
IF x>14 AND x<80 THEN req=1:GOTO EndeSubr :REM JA
IF x>110 AND x<176 THEN req=2:GOTO EndeSubr :REM NEIN
END IF
GOTO Wa11
EndeSubr:
WINDOW CLOSE 7:MENU ON
END SUB
'Anzahl Zeilen-1,Zeile,Spalte,Laenge(),Daten$(),Cursorfarbe,Hintergrundf.
SUB intext (zeilen,ze,sp,laenge(),x$(),Cf,Hf) STATIC
SHARED l,p:l=0:p=1:d$="":d=0:liz=0
FOR i=1 TO 15:d$=INKEY$:d$="":NEXT i :REM Tastaturpuffer leeren
getkey:
COLOR 1,Cf:LOCATE ze+l,sp+p-1:PRINT MID$(x$(l),p,1);
IF MOUSE(0)<0 THEN
x=MOUSE(1):y=MOUSE(2)
IF x>(sp-1)*8 AND x<(sp+laenge(l))*8 OR x>(sp+laenge(l))*8 THEN
IF y>(ze-1)*8 AND y<(ze+zeilen)*8 THEN
COLOR 1,Hf:LOCATE ze+l,sp+p-1:PRINT MID$(x$(l),p,1);
p=INT(x/8)-sp+2:l=INT(y/8)-ze+1
IF p>laenge(l) THEN p=laenge(l):GOTO getkey
END IF
END IF
END IF
d$=INKEY$:IF d$="" THEN SLEEP:GOTO getkey
IF d$=CHR$(34) THEN d$=CHR$(39)
d=ASC(d$)
COLOR 1,Hf:LOCATE ze+l,sp+p-1:PRINT MID$(x$(l),p,1);
IF d>127 AND d<138 OR d>138 AND d<160 THEN getkey
IF d>0 AND d<8 OR d>8 AND d<13 OR d>13 AND d<27 THEN getkey
IF d$=CHR$(27) THEN
IF liz=1 THEN liz=0:p=laenge(l)+1
EXIT SUB
END IF
IF d$=CHR$(13) THEN
IF liz=1 THEN liz=0:p=laenge(l)+1
IF l=zeilen THEN EXIT SUB
p=1:l=l+1:GOTO getkey
END IF
IF d$=CHR$(8) THEN
IF p>1 THEN
p=p-1
x$(l)=LEFT$(x$(l),p-1)+MID$(x$(l),p+1)+" "
LOCATE ze+l,sp:PRINT x$(l):GOTO getkey
ELSE
GOSUB Sod1:GOTO getkey
END IF
END IF
IF d$=CHR$(127) THEN
IF p>=1 THEN
x$(l)=LEFT$(x$(l),p-1)+MID$(x$(l),p+1)+" "
LOCATE ze+l,sp:PRINT x$(l):GOTO getkey
ELSE
GOSUB Sod1:GOTO getkey
END IF
END IF
IF d$=CHR$(138) THEN
x$(l)=SPACE$(laenge(l)):LOCATE ze+l,sp:PRINT x$(l):p=1
GOTO getkey
END IF
ON INSTR(CHR$(28)+CHR$(29)+CHR$(30)+CHR$(31),d$)GOTO auf,AB,rechts,links
IF RIGHT$(x$(l),laenge(l)+1-p)=SPACE$(laenge(l)+1-p) THEN
MID$(x$(l),p,1)=d$:LOCATE ze+l,sp+p-1:PRINT d$;
ELSE
x$(l)=LEFT$(x$(l),p-1)+d$+MID$(x$(l),p,laenge(l)-p)
LOCATE ze+l,sp:PRINT x$(l)
END IF
IF p=laenge(l) THEN GOSUB Sod1:liz=1:GOTO getkey
p=p+1
GOTO getkey
auf:
IF l=0 THEN GOSUB Sod1:GOTO getkey
l=l-1
IF p>laenge(l) THEN p=laenge(l)
GOTO getkey
AB:
IF l=zeilen THEN GOSUB Sod1:GOTO getkey
l=l+1
IF p>laenge(l) THEN p=laenge(l)
GOTO getkey
rechts:
IF p=laenge(l) THEN GOSUB Sod1:GOTO getkey
p=p+1:GOTO getkey
links:
IF p=1 THEN GOSUB Sod1:GOTO getkey
p=p-1:GOTO getkey
Sod1: SOUND 1000,4,255,0:RETURN
END SUB
'Zeile,Spalte,AnzahlZeichen,Dat$,Cursorfarbe,Hintergrundfarbe
SUB getline (ze,sp,AnzZ,txt$,Cf,Hf) STATIC
SHARED abbruch,p:p=1:liz=0:d$="":d=0:LOCATE ze,sp:PRINT txt$
FOR i=1 TO 15:d$=INKEY$:d$="":NEXT i:REM Tastaturpuffer leeren
getk:
COLOR 1,Cf:LOCATE ze,sp+p-1:PRINT MID$(txt$,p,1);
tst=MOUSE(0)
IF MOUSE(0)<0 THEN
x=MOUSE(1):y=MOUSE(2)
IF x>(sp-1)*8 AND x<(sp+AnzZ)*8 THEN
IF y>(ze-1)*8 AND y<ze*8 THEN
COLOR 1,Hf:LOCATE ze,sp+p-1:PRINT MID$(txt$,p,1);
p=INT(x/8)-sp+2:IF p>AnzZ THEN p=AnzZ:GOTO getk
END IF
END IF
IF y>28 AND y<42 AND WINDOW(0)=4 THEN
IF x>14 AND x<80 THEN abbruch=0:GOTO ausg 'Klick in OK
IF x>110 AND x<176 THEN abbruch=1:d$="":GOTO ausg 'Klick in ABBR.
END IF
END IF
d$=INKEY$:IF d$="" THEN SLEEP:GOTO getk
IF d$=CHR$(34) THEN d$=CHR$(39)
d=ASC(d$)
COLOR 1,Hf:LOCATE ze,sp+p-1:PRINT MID$(txt$,p,1);
IF d>127 AND d<138 OR d>138 AND d<160 THEN getk
IF d>0 AND d<8 OR d>8 AND d<13 OR d>13 AND d<27 OR d>27 AND d<30 THEN getk
IF d$=CHR$(13) THEN
IF liz=1 THEN liz=0:p=AnzZ+1
ausg:
EXIT SUB
END IF
IF d$=CHR$(8) THEN
IF p>1 THEN
p=p-1:txt$=LEFT$(txt$,p-1)+MID$(txt$,p+1)+" "
LOCATE ze,sp:PRINT txt$:GOTO getk
ELSE
GOSUB Sod3:GOTO getk
END IF
END IF
IF d$=CHR$(30) THEN
IF p=AnzZ THEN GOSUB Sod3:GOTO getk
p=p+1:GOTO getk
END IF
IF d$=CHR$(31) THEN
IF p=1 THEN GOSUB Sod3:GOTO getk
p=p-1:GOTO getk
END IF
IF d$=CHR$(127) THEN
IF p>=1 THEN
txt$=LEFT$(txt$,p-1)+MID$(txt$,p+1)+" "
LOCATE ze,sp:PRINT txt$:GOTO getk
ELSE
GOSUB Sod3:GOTO getk
END IF
END IF
IF d$=CHR$(138) THEN
txt$=SPACE$(AnzZ):LOCATE ze,sp:PRINT txt$
p=1:GOTO getk
END IF
MID$(txt$,p,1)=d$:LOCATE ze,sp:PRINT txt$
IF p=AnzZ THEN GOSUB Sod3:liz=1:GOTO getk
p=p+1:GOTO getk
Sod3: SOUND 1000,4,255,0:RETURN
END SUB
SUB SortDir STATIC
SHARED counter
FOR sort1=1 TO counter:FOR sort2=sort1+1 TO counter-1
IF UCASE$(DirName$(sort1))>UCASE$(DirName$(sort2)) THEN
SWAP DirName$(sort1),DirName$(sort2)
SWAP DirSize&(sort1),DirSize&(sort2)
SWAP DirBlks&(sort1),DirBlks&(sort2)
END IF
NEXT sort2:NEXT sort1
END SUB
REM Subroutine Farbwahl, aus Amiga 4/88/Seite 83
SUB Farbwahl STATIC
SHARED SNr:feldx=WINDOW(2)/10:feldy=WINDOW(3)/4:bahn=feldy/7
WINDOW 88,,(feldx,feldy)-(9*feldx,3.25*feldy+25),0,SNr
fx=WINDOW(2):fy=WINDOW(3)
Farbzahl=WINDOW(6)
IF dimflag=0 THEN DIM Farbwert!(Farbzahl,3):dimflag=1
Tabellenanfang&=PEEKL(4+PEEKL(4+(44+PEEKL(WINDOW(7)+46))))
FOR i=0 TO Farbzahl:Farbwert!(i,0)=PEEKW(Tabellenanfang&+2*i):NEXT i
Farbspeicher:
aktivfarbe=0:COLOR 1,0
py%=2*(feldy+bahn):px%=2*(feldx-bahn):GOSUB curpos:PRINT "RESET"
px%=6*feldx-bahn:GOSUB curpos:PRINT "OK"
py%=2*(feldy+bahn+11):px%=2*(feldx-bahn-7):GOSUB curpos:PRINT "GRUNDWERTE";
py%=2*(feldy+bahn+11):px%=6*(feldx-bahn):GOSUB curpos:PRINT "ABBRUCH";
FOR i=0 TO Farbzahl:hd!=Farbwert!(i,0)
FOR J=1 TO 3
hx!=hd!\16^(3-J):hd!=hd!-hx!*16^(3-J)
Farbwert!(i,J)=INT(hx!*6.667)/100
NEXT J
PALETTE i,Farbwert!(i,1),Farbwert!(i,2),Farbwert!(i,3)
LINE(i*8*feldx/(Farbzahl+1),feldy)-((i+1)*8*feldx/(Farbzahl+1),2*feldy),i,bf
NEXT i
LINE(0,0)-(8*feldx,2.5*feldy),1,b
LINE(0,feldy)-(8*feldx,2*feldy),1,b
LINE(4*feldx,2*feldy)-(4*feldx,2.5*feldy)
LINE(4*feldx,2*feldy+30)-(4*feldx,2.65*feldy+1)
GOSUB reglerfeld
mcheck:
Flag=MOUSE(0)
IF Flag THEN GOSUB farbfeldwahl
IF Flag<0 THEN GOSUB regeln
GOTO mcheck
regeln:
IF MOUSE(2)>feldy-bahn OR MOUSE(2)<bahn THEN RETURN
i=(MOUSE(2)-6)\(bahn*2)+1
posx!=MOUSE(1)
IF posx!<2*feldx OR posx!>6*feldx THEN RETURN
py%=bahn*i*2:GOSUB regler1
RETURN
farbfeldwahl:
y=MOUSE(4):IF y<feldy OR y>3*feldy THEN RETURN
x=MOUSE(3):IF x<0 OR x>feldx*8 THEN RETURN
IF x>feldx/30 AND x<feldx*4 AND y>fy-23 AND y<fy THEN Grundwerte
IF x>feldx*4 AND x<feldx*8 AND y>fy-23 AND y<fy THEN WINDOW CLOSE 88:EXIT SUB
IF y<2*feldy THEN
aktivfarbe=INT(x/(8*feldx/(Farbzahl+1)))
GOSUB reglerfeld:RETURN
END IF
IF x<4*feldx THEN Farbspeicher
'Farbwerte auf Diskette speichern
WINDOW CLOSE 88:MOUSE ON
OPEN "Farbdaten" FOR OUTPUT AS 1
PRINT#1,Farbzahl
FOR i=0 TO Farbzahl:FOR J=1 TO 3:PRINT#1,Farbwert!(i,J):NEXT J,i
CLOSE 1
EXIT SUB
RETURN
Grundwerte:
RESTORE Grunddaten
READ Farbzahl
FOR i=0 TO Farbzahl
FOR J=1 TO 3
READ Farbwert!(i,J)
NEXT J
PALETTE i,Farbwert!(i,1),Farbwert!(i,2),Farbwert!(i,3)
NEXT i
RETURN
reglerfeld:
LINE (0,0)-(8*feldx,feldy),aktivfarbe,bf
LINE (0,0)-(8*feldx,feldy),1,b
zfarbe=Farbzahl-aktivfarbe
COLOR zfarbe,aktivfarbe
RESTORE reglerfeld: DATA ROT,GR<0x5c>N,BLAU
px%=feldx-bahn
FOR i=1 TO 3
py%=bahn*i*2:GOSUB curpos:READ m$:PRINT m$
posx!=Farbwert!(aktivfarbe,i)*feldx*4+2*feldx
GOSUB regler2
LINE (feldx*2-1,py%+2)-(feldx*6+1,py%-bahn-2),zfarbe,b
NEXT
RETURN
regler1:
Farbwert!(aktivfarbe,i)=INT((posx!-feldx*2)/feldx*25)/100
PALETTE aktivfarbe,Farbwert!(aktivfarbe,1),Farbwert!(aktivfarbe,2),Farbwert!(aktivfarbe,3)
regler2:
LINE (posx!,py%)-(feldx*6,py%-bahn),aktivfarbe,bf
LINE (feldx*2,py%)-(posx!,py%-bahn),zfarbe,bf
px%=feldx*6+bahn:GOSUB curpos
PRINT Farbwert!(aktivfarbe,i);" "
px%=feldx-bahn
RETURN
curpos:
POKEW WINDOW(8)+36,px%:POKEW WINDOW(8)+38,py%:RETURN
Grunddaten:
DATA 3,0,0,0,.66,.66,.66,0,.54,0,1,.53,0
END SUB
SUB dos.lib STATIC
OPEN "ram:dos.bmap" FOR OUTPUT AS 1
PRINT#1,"Lock";CHR$(0);CHR$(255);CHR$(172);CHR$(2);CHR$(3);CHR$(0);
PRINT#1,"UnLock";CHR$(0);CHR$(255);CHR$(166);CHR$(2);CHR$(0);
PRINT#1,"Examine";CHR$(0);CHR$(255);CHR$(154);CHR$(2);CHR$(3);CHR$(0);
PRINT#1,"ExNext";CHR$(0);CHR$(255);CHR$(148);CHR$(2);CHR$(3);CHR$(0);
PRINT#1,"IoErr";CHR$(0);CHR$(255);CHR$(124);CHR$(0);
PRINT#1,"Execute";CHR$(0);CHR$(255);CHR$(34);CHR$(2);CHR$(3);CHR$(4);CHR$(0);
CLOSE 1
LIBRARY "RAM:dos.library"
KILL "RAM:dos.bmap"
END SUB
SUB intuition.lib STATIC
OPEN "ram:intuition.bmap" FOR OUTPUT AS 1
PRINT#1,"SetWindowTitles";CHR$(0);CHR$(254);CHR$(236);CHR$(9);CHR$(10);CHR$( 11);CHR$(0);
PRINT#1,"SizeWindow";CHR$(0);CHR$(254);CHR$(224);CHR$(9);CHR$(1);CHR$(2);CHR$(0);
PRINT#1,"WindowToBack";CHR$(0);CHR$(254);CHR$(206);CHR$(9);CHR$(0);
PRINT#1,"WindowToFront";CHR$(0);CHR$(254);CHR$(200);CHR$(9);CHR$(0);
PRINT#1,"WindowLimits";CHR$(0);CHR$(254);CHR$(194);CHR$(9);CHR$(1);CHR$(2);CHR$( 3);CHR$(4);CHR$(0);
PRINT#1,"AllocRemember";CHR$(0);CHR$(254);CHR$(116);CHR$(9);CHR$(1);CHR$(2);CHR$(0);
PRINT#1,"FreeRemember";CHR$(0);CHR$(254);CHR$(104);CHR$(9);CHR$(1);CHR$(0);
PRINT#1,"ActivateWindow";CHR$(0);CHR$(254);CHR$(62);CHR$(9);CHR$(0);
CLOSE 1
LIBRARY "RAM:intuition.library"
KILL "RAM:intuition.bmap"
END SUB